<?php
/*
 * Copyright (c) 2017-2025 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace TencentCloud\Config\V20220802\Models;
use TencentCloud\Common\AbstractModel;

/**
 * DescribeDiscoveredResource response structure.
 *
 * @method string getResourceId() Obtain Resource ID

Note: This field may return null, indicating that no valid value is found.
 * @method void setResourceId(string $ResourceId) Set Resource ID

Note: This field may return null, indicating that no valid value is found.
 * @method string getResourceType() Obtain Resource type

Note: This field may return null, indicating that no valid value is found.
 * @method void setResourceType(string $ResourceType) Set Resource type

Note: This field may return null, indicating that no valid value is found.
 * @method string getResourceName() Obtain Resource Name

Note: This field may return null, indicating that no valid value is found.
 * @method void setResourceName(string $ResourceName) Set Resource Name

Note: This field may return null, indicating that no valid value is found.
 * @method string getResourceRegion() Obtain Resource region

Note: This field may return null, indicating that no valid value is found.
 * @method void setResourceRegion(string $ResourceRegion) Set Resource region

Note: This field may return null, indicating that no valid value is found.
 * @method string getResourceZone() Obtain Resource availability zone
Note: This field may return null, indicating that no valid value is found.
 * @method void setResourceZone(string $ResourceZone) Set Resource availability zone
Note: This field may return null, indicating that no valid value is found.
 * @method string getConfiguration() Obtain Resource configuration

Note: This field may return null, indicating that no valid value is found.
 * @method void setConfiguration(string $Configuration) Set Resource configuration

Note: This field may return null, indicating that no valid value is found.
 * @method string getResourceCreateTime() Obtain Resource creation time

Note: This field may return null, indicating that no valid value is found.
 * @method void setResourceCreateTime(string $ResourceCreateTime) Set Resource creation time

Note: This field may return null, indicating that no valid value is found.
 * @method array getTags() Obtain Resource tag

Note: This field may return null, indicating that no valid value is found.
 * @method void setTags(array $Tags) Set Resource tag

Note: This field may return null, indicating that no valid value is found.
 * @method string getUpdateTime() Obtain Resource update time
Note: This field may return null, indicating that no valid value is found.
 * @method void setUpdateTime(string $UpdateTime) Set Resource update time
Note: This field may return null, indicating that no valid value is found.
 * @method string getRequestId() Obtain The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
 * @method void setRequestId(string $RequestId) Set The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
 */
class DescribeDiscoveredResourceResponse extends AbstractModel
{
    /**
     * @var string Resource ID

Note: This field may return null, indicating that no valid value is found.
     */
    public $ResourceId;

    /**
     * @var string Resource type

Note: This field may return null, indicating that no valid value is found.
     */
    public $ResourceType;

    /**
     * @var string Resource Name

Note: This field may return null, indicating that no valid value is found.
     */
    public $ResourceName;

    /**
     * @var string Resource region

Note: This field may return null, indicating that no valid value is found.
     */
    public $ResourceRegion;

    /**
     * @var string Resource availability zone
Note: This field may return null, indicating that no valid value is found.
     */
    public $ResourceZone;

    /**
     * @var string Resource configuration

Note: This field may return null, indicating that no valid value is found.
     */
    public $Configuration;

    /**
     * @var string Resource creation time

Note: This field may return null, indicating that no valid value is found.
     */
    public $ResourceCreateTime;

    /**
     * @var array Resource tag

Note: This field may return null, indicating that no valid value is found.
     */
    public $Tags;

    /**
     * @var string Resource update time
Note: This field may return null, indicating that no valid value is found.
     */
    public $UpdateTime;

    /**
     * @var string The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    public $RequestId;

    /**
     * @param string $ResourceId Resource ID

Note: This field may return null, indicating that no valid value is found.
     * @param string $ResourceType Resource type

Note: This field may return null, indicating that no valid value is found.
     * @param string $ResourceName Resource Name

Note: This field may return null, indicating that no valid value is found.
     * @param string $ResourceRegion Resource region

Note: This field may return null, indicating that no valid value is found.
     * @param string $ResourceZone Resource availability zone
Note: This field may return null, indicating that no valid value is found.
     * @param string $Configuration Resource configuration

Note: This field may return null, indicating that no valid value is found.
     * @param string $ResourceCreateTime Resource creation time

Note: This field may return null, indicating that no valid value is found.
     * @param array $Tags Resource tag

Note: This field may return null, indicating that no valid value is found.
     * @param string $UpdateTime Resource update time
Note: This field may return null, indicating that no valid value is found.
     * @param string $RequestId The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    function __construct()
    {

    }

    /**
     * For internal only. DO NOT USE IT.
     */
    public function deserialize($param)
    {
        if ($param === null) {
            return;
        }
        if (array_key_exists("ResourceId",$param) and $param["ResourceId"] !== null) {
            $this->ResourceId = $param["ResourceId"];
        }

        if (array_key_exists("ResourceType",$param) and $param["ResourceType"] !== null) {
            $this->ResourceType = $param["ResourceType"];
        }

        if (array_key_exists("ResourceName",$param) and $param["ResourceName"] !== null) {
            $this->ResourceName = $param["ResourceName"];
        }

        if (array_key_exists("ResourceRegion",$param) and $param["ResourceRegion"] !== null) {
            $this->ResourceRegion = $param["ResourceRegion"];
        }

        if (array_key_exists("ResourceZone",$param) and $param["ResourceZone"] !== null) {
            $this->ResourceZone = $param["ResourceZone"];
        }

        if (array_key_exists("Configuration",$param) and $param["Configuration"] !== null) {
            $this->Configuration = $param["Configuration"];
        }

        if (array_key_exists("ResourceCreateTime",$param) and $param["ResourceCreateTime"] !== null) {
            $this->ResourceCreateTime = $param["ResourceCreateTime"];
        }

        if (array_key_exists("Tags",$param) and $param["Tags"] !== null) {
            $this->Tags = [];
            foreach ($param["Tags"] as $key => $value){
                $obj = new Tag();
                $obj->deserialize($value);
                array_push($this->Tags, $obj);
            }
        }

        if (array_key_exists("UpdateTime",$param) and $param["UpdateTime"] !== null) {
            $this->UpdateTime = $param["UpdateTime"];
        }

        if (array_key_exists("RequestId",$param) and $param["RequestId"] !== null) {
            $this->RequestId = $param["RequestId"];
        }
    }
}
